home *** CD-ROM | disk | FTP | other *** search
Wrap
AMOS Source Code | 2001-09-10 | 12.6 KB | 466 lines
Hide ' CNF(0)=(Disk-Boot=0; HD-Boot=1) ' CNF(1)=Demos available ' CNF(2)=Printer available ' CNF(3)=Date ' CNF(4)=(Diskette=0; CD=1) Dim CNF(5) Global CNF() CNF(0)=1 CNF(1)=0 CNF(2)=0 CNF(3)=6489 CNF(4)=0 'Goto SKIPTITLE Extension_8_0EA2 "mod.wialtitle",-3 Extension_8_13C6 3 Extension_8_100C Extension_8_1398(1) To Start(3)+Length(3) WIALPRESENTS If Chip Free+Fast Free<700000 or Extension_8_060E =68000 Then WIALANIMLOWMEM Else WIALANIM Extension_8_0EA2 "mod.main",-3 Extension_8_13C6 3 Extension_8_100C Extension_8_1398(1) To Start(3)+Length(3) Extension_8_10F2 125 Extension_8_108E 3 SKIPTITLE: MAIN End Procedure WIALPRESENTS Extension_8_13C6 3 Screen Open 1,320,512,2,0 : Screen Hide Curs Off : Flash Off : Paper 0 : Pen 1 : Cls Screen Open 0,320,256,32,0 Curs Off : Flash Off : Paper 0 : Pen 1 : Cls Reserve As Chip Work 9,2048 For A=2 To 2047 Poke Start(9)+A,A*7+Rnd(24)-A*Rnd(3) Next Get Sprite Palette For A=0 To 15 : Colour A+16,Colour(A) : Next For A=0 To 15 : Colour A,0 : Next Fade 3,$8,$824,$F00,$F60,$FA0,$FF0,$FF8,$FFF For A=8 To 15 : Colour A,$FFF : Next OX=160 : OY=128 Do Read XX1,YY1 Exit If XX1=-1 X1=((XX1-160)*3)/2+160 Y1=((YY1-50)*3)/2+50 Do Read XX2,YY2 Exit If XX2=-1 X2=((XX2-160)*3)/2+160 Y2=((YY2-50)*3)/2+50 For A=0 To 63 X=X1+((X2-X1)*A)/64 Y=Y1+((Y2-Y1)*A)/64 Sprite 0,X Hard(X),Y Hard(Y),1+Rnd(6) P=Min( Extension_8_039E(X,Y)+1,7) Extension_8_0388 X,Y,P Extension_8_0388 X-1,Y,Min( Extension_8_039E(X-1,Y)+Rnd(1),7) Extension_8_0388 X+1,Y,Min( Extension_8_039E(X+1,Y)+Rnd(1),7) Extension_8_0388 X,Y-1,Min( Extension_8_039E(X,Y+1)+Rnd(1),7) Extension_8_0388 X,Y+1,Min( Extension_8_039E(X,Y-1)+Rnd(1),7) ' Turbo Plot X,Y+1,Best Pen(Mix Colour(Colour(Turbo Point(X,Y+1)),Colour(P))) If(A and 7)=0 Extension_8_13F4 3,1,10000+Rnd(4400) Extension_8_147C 2,X/10 Extension_8_147C 1,(320-X)/10 Extension_8_1030 160,128 To OX,OY,0,%1000 Extension_8_1030 160,128 To X,Y,15,%1000 Wait Vbl OX=X : OY=Y End If Next X1=X2 : Y1=Y2 Loop Loop Sprite Off Extension_8_1030 160,128 To OX,OY,0,%1000 For A=8 To 15 : Colour A,Colour(A-8) : Next Restore Do Read XX1,YY1 Exit If XX1=-1 X1=((XX1-160)*3)/2+160 Y1=((YY1-50)*3)/2+50 Do Read XX2,YY2 Exit If XX2=-1 X2=((XX2-160)*3)/2+160 Y2=((YY2-50)*3)/2+50 Extension_8_1030 X1,Y1 To X2,Y2,15,-%1000 X1=X2 : Y1=Y2 Loop Loop For A=0 To 15 : Colour A+16,Colour(A) : Next Screen 1 Get Palette 0 For A=0 To 7 : Colour A,$8+A*$100 : Next For A=8 To 15 : Colour A,0 : Next For A=0 To 7 : Colour A+16,$800 : Next For A=8 To 15 : Colour A+16,Colour(A) : Next Screen 0 Extension_8_1042 0,3 Extension_8_128A 0 Extension_8_12B2 0,3 To 0,4 Extension_8_12B2 0,3 To 1,0 Screen Copy 1,0,0,320,256 To 1,0,256 Screen 1 Cls 0,0,0 To 320,256 LB=Logbase(0) Wait Vbl Screen 0 Fade 3 To 1 : Wait 16 Break Off OB=Logbase(3) Y=0 : YS=0 : P=0 Repeat Loke Screen Base+3*4+6*4,LB+(256-(Y/8))*40 : View Add Y,YS : Inc YS Wait Vbl If Y/8>200 and P=0 Then P=1 : Extension_8_1466 64 : Extension_8_13F4 1,2,8000 Until Y/8>256 Loke Screen Base+3*4+6*4,OB Extension_8_121C 0,3 : Wait Vbl : View Break On Wait 15 Extension_8_1466 32 Extension_8_13F4 2,2,8000 Screen 1 : Cls Extension_8_1204 13 T$="Pr�sentiert..." Ink 1,0 : Text 160-Text Length(T$)/2,160,T$ Screen 1 : For A=8 To 15 : Colour A,$FFF : Next Screen 0 : For A=8 To 15 : Colour A,$8 : Next Wait Vbl Extension_8_12B2 1,0 To 0,3 Fade 2 To 1 : Wait 32 Screen Close 1 Erase 9 Pop Proc Data 74,30,93,28,104,58,108,27,125,25,137,55,140,24,159,22,148,75,129,76,119,47,116,78,97,79 Data 74,30,-1,-1 Data 159,22,175,25,171,38,155,35,159,22,-1,-1 Data 164,28,163,31,166,32,167,29,164,28,-1,-1 Data 155,41,171,40,173,77,157,77,155,41,-1,-1 Data 174,49,179,41,189,38,212,40,218,47,218,76,203,76,203,73 Data 195,76,181,76,172,69,174,59,183,55,201,51,201,46,192,47 Data 189,50,174,49,-1,-1 Data 202,60,189,64,194,68,201,65,202,60,-1,-1 Data 230,25,247,28,234,77,218,76,230,25,-1,-1 Data -1,-1 End Proc Procedure WIALANIMLOWMEM Wait 50 : Fade 1 : Wait 16 : Screen Close 0 Extension_8_0EA2 "IntroAnim1.dat",8 Extension_8_0EA2 "IntroAnim2.dat",9 ST1=Start(8)+12 ST2=Start(9) SPEED=4 Wait Vbl : Timer=0 ST=Frame Play(ST1,1,0) Screen Hide Screen Display 0,128+80,40+64,160,128 Double Buffer : Autoback 0 Wait Vbl FR=0 Extension_8_10F2 0 Extension_8_108E 3 PART=1 Screen Show 0 Repeat Screen Swap Extension_8_149E 0,0 : View If FR=97 or FR=100 or FR=104 or FR=108 or FR=113 or FR=117 or FR=120 Then Extension_8_13EA 8,7 If FR=136 Then Extension_8_13F4 8,8,14000 If FR=140 Then Repeat : Multi Wait : Until Extension_8_10B6 : SPEED=2 Repeat : Multi Wait : Until Timer>=SPEED : Timer=0 NST=Frame Play(ST,1) AD=Hunt(ST To NST,"CMAP") If AD Add AD,8 For AA=0 To 15 C0=Peek(AD)/16 : C1=Peek(AD+1)/16 : C2=Peek(AD+2)/16 : Add AD,3 Extension_8_14C6 0,AA, Extension_8_0A0E(C0,C1,C2) Next End If ST=NST : Inc FR Exit If Leek(ST+4)=0 and PART=2 If Leek(ST+4)=0 and PART=1 Then ST=ST2 : PART=2 Until Inkey$=Chr$(27) or Mouse Key<>0 Auto View Off View For AA=0 To 15 Repeat : Multi Wait : Until Timer>=SPEED : Timer=0 Screen Swap : Extension_8_0FBA 0 : Screen Swap : View Next Auto View On Extension_8_10A8 Screen Close 0 Erase 8 : Erase 9 End Proc Procedure WIALANIM Extension_8_0EA2 "IntroAnim1.dat",8 Extension_8_0EA2 "IntroAnim2.dat",9 Fade 2 : Wait 32 : Screen Close 0 ST1=Start(8)+12 ST2=Start(9) SPEED=4 Wait Vbl : Timer=0 ST=Frame Play(ST1,1,0) Screen Hide Double Buffer : Autoback 0 Wait Vbl Screen Open 1,320,128,4096,0 Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 0 Screen Hide Double Buffer : Autoback 0 Get Palette 0 Reserve As Chip Work 20,64 Copper Off Cop Reset Cop Move $100,$200 Cop Wait $FE,$FF Cop Swap Cop Reset Cop Move $100,0 Cop Wait $80,$2E For A=0 To 7 Cop Movel $120+A*4,Start(20) Next CMAP= Extension_8_11E0 For A=0 To 15 Cop Move $180+A*2,Colour(A) Next Cop Movel $108,0 : Rem BPL1MOD BPL2MOD Cop Movel $102,0 : Rem BPLCON1 BPLCON2 Cop Move $8E,$3081 : Rem DIWSTRT Cop Move $90,$30C1 : Rem DIWSTOP Cop Move $92,$38 : Rem DDFSTRT Cop Move $94,$D0 : Rem DFFSTOP BPL= Extension_8_11E0 For A=0 To 5 Cop Movel $E0+A*4,Phybase(A) Next SCRM= Extension_8_11E0 Cop Move $100,$6A00 : Rem BLPCON0 Cop Move $96,$8180 : Rem DMACON Cop Move $1FC,0 For A=0 To 255 Cop Wait 7,A+$2F Cop Move $108,-40*(A and 1) Cop Move $10A,-40*(A and 1) Cop Move $102,(A and 1)*$11 Next Cop Swap FR=0 Extension_8_10F2 0 Extension_8_108E 3 PART=1 Repeat Extension_8_1520 0,0,0,160,128 To 1,0,0,$12 Screen Swap Extension_8_149E 0,1 Screen 1 For A=0 To 5 Doke BPL+A*8+2, Extension_8_0946(Phybase(A)) Doke BPL+A*8+6,Phybase(A) Next For A=0 To 15 Doke CMAP+A*4+2,Colour(A) Next If FR=97 or FR=100 or FR=104 or FR=108 or FR=113 or FR=117 or FR=120 Then Extension_8_13EA 8,7 If FR=136 Then Extension_8_13F4 8,8,14000 If FR=140 Then Repeat : Multi Wait : Until Extension_8_10B6 : SPEED=2 Repeat : Multi Wait : Until Timer>=SPEED : Timer=0 Screen 0 NST=Frame Play(ST,1) AD=Hunt(ST To NST,"CMAP") If AD Add AD,8 For AA=0 To 15 C0=Peek(AD)/16 : C1=Peek(AD+1)/16 : C2=Peek(AD+2)/16 : Add AD,3 Extension_8_14C6 0,AA, Extension_8_0A0E(C0,C1,C2) Next End If ST=NST : Inc FR Exit If Leek(ST+4)=0 and PART=2 If Leek(ST+4)=0 and PART=1 Then ST=ST2 : PART=2 Until Inkey$=Chr$(27) or Mouse Key<>0 Screen 1 Screen Swap For AA=0 To 15 Repeat : Multi Wait : Until Timer>=SPEED : Timer=0 Extension_8_0FBA 1 For A=0 To 5 Doke BPL+A*8+2, Extension_8_0946(Logbase(A)) Doke BPL+A*8+6,Logbase(A) Next For A=0 To 15 Doke CMAP+A*4+2,Colour(A) Next Next Extension_8_10A8 Cop Reset Cop Move $100,$200 Cop Wait $FE,$FF Cop Swap Doke SCRM+2,$200 Wait Vbl Copper On Screen Close 0 Screen Close 1 Erase 8 : Erase 9 : Erase 20 Hide On : Sprite Off End Proc Procedure MAIN Dim T$(5),EN(5),HELP$(5) Extension_8_0456 "Info.dat",9 Extension_8_0456 "Artikel.dat",10 Unpack 12 To 0 : Screen Hide Colour 16,$FFF : Colour 20,$F00 : Colour 21,$FF0 Screen Open 1,320,256,32,0 Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 0 T$(0)="o Spiele�bersicht" : EN(0)=1 HELP$(0)="Gibt ihnen eine �bersicht �ber alle momentan verf�gbaren Spiele. Durch einen Klick auf einem Titel erhalten sie mehr Informationen zum Spiel." T$(1)="o Suche Spiel" : EN(1)=1 HELP$(1)="L��t sie gezielt nach einem Spieltitel suchen." T$(2)="o Spiele bestellen" : EN(2)=CNF(2) HELP$(2)="Druckt ein Bestellformular mit den gew�hlten Spielen aus. Diese Option ist nur verf�gbar, wenn sie das Programm von einer Harddisk aus gestartet haben." HELP$(3)="Gibt ein paar sinnlose Informationen zu diesem Katalog-Programm aus ;-)" T$(4)="o Demos spielen" : EN(4)=CNF(1) HELP$(4)="Hiermit k�nnen sie Demoversionen von Spiele antesten. Normalerweise nur bei der CD-Version verf�gbar." If CNF(0)=0 T$(5)="o Programm verlassen" HELP$(5)="Kehrt zur Workbench zur�ck." Else T$(5)="o Auf Harddisk installieren" HELP$(5)="Erm�glicht eine Installation des Hauptprogramms auf einer m�glicherweise vorhandenen Festplatte." End If EN(5)=1 : EN(3)=1 Do For A=0 To 31 : Colour A,0 : Next Screen Display 1,128,40,320,256 Screen Offset 1,0,0 Gosub RS Extension_8_1204 14 Gr Writing 0 If CNF(4)=0 TX[95,10,"Katalog Diskette",16,0] TX[15,10,"WIAL",20,0] T$(3)="o �ber diese Diskette" Else TX[135,10,"Katalog CD",16,0] TX[55,10,"WIAL",20,0] T$(3)="o �ber diese CD" End If Fade 2 To 0 Extension_8_1204 16 TX[300,5,"'"+ Extension_8_0EB8( Extension_8_07F2(CNF(3)) mod 100,2),20,0] Extension_8_1204 15 For A=0 To 5 TX[10,80+A*25,T$(A),8+EN(A)*8,0] Next OSB=-1 Show On X Mouse=X Hard(160) : Y Mouse=Y Hard(60) BX=0 Do Multi Wait XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse) : MK=Mouse Key SB=-1 If YM>74 and YM<225 SB=(YM-75)/25 End If If OSB<>SB If OSB<>-1 TN[10,80+OSB*25,T$(OSB),8+EN(OSB)*8] End If OSB=SB If OSB<>-1 TN[10,80+OSB*25,T$(OSB),8+EN(SB)*12] End If TIM=0 End If If SB>-1 Then Inc TIM If TIM=50 TIM=51 If BX=0 For X=2 To 80 Wait Vbl Y=(X*64)/80 Ink 16 : Box 232-X,136-Y To 231+X,135+Y Ink 0 : Box 233-X,137-Y To 230+X,134+Y Next BX=1 End If Ink 0 : Bar 233-80,137-64 To 230+80,134+64 Extension_8_1204 16 TT$=HELP$(SB)+Chr$(10)+"#"+Chr$(10) Y=Free POS=Varptr(TT$) Y=74 : LP=POS : LS=POS Do P=Peek(POS) : Inc POS Exit If P=35 If P=32 or P=10 : LS=POS-1 : End If T$=Peek$(LP,POS-LP) : TL=Text Length(T$) If P=10 or TL>159 T$=Peek$(LP,LS-LP) : TL=Text Length(T$) Ink 21 : Text 232-TL/2,Y+Text Base,T$ Add Y,10 LP=LS+1 End If Loop Extension_8_1204 15 End If If MK=1 and SB>-1 Then Exit If EN(SB)=1 Loop Fade 2 For A=0 To 256 Step 8 Screen Display 1,128,40,320,256-A Screen Offset 1,0,A Wait Vbl Next Exit If SB=5 Hide On SB+1 Gosub OVERVIEW,SEARCHGAME,GAMEORDER,ABOUT,DEMOSPLAY Loop Pop Proc OVERVIEW: Return SEARCHGAME: Return GAMEORDER: Return ABOUT: Return DEMOSPLAY: Return RS: Screen Copy 0,0,0,256,256 To 1,0,0 Screen Copy 0,0,0,64,256 To 1,256,0 Return End Proc Procedure T[Y,T$,C1,C2] XX=(320-Text Length(T$))/2 YY=Y+Text Base Ink C2 : Text XX-1,YY,T$ Text XX+1,YY,T$ Text XX,YY-1,T$ Text XX,YY+1,T$ Ink C1 : Text XX,YY,T$ End Proc Procedure TX[XX,Y,T$,C1,C2] YY=Y+Text Base Ink C2 : Text XX-1,YY,T$ Text XX+1,YY,T$ Text XX,YY-1,T$ Text XX,YY+1,T$ Ink C1 : Text XX,YY,T$ End Proc Procedure TN[XX,Y,T$,C1] YY=Y+Text Base Ink C1 : Text XX,YY,T$ End Proc